longpress: fix reentrancy on ::reset()
authorCarlos Garnacho <carlosg@gnome.org>
Tue, 8 Apr 2014 19:10:43 +0000 (21:10 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Fri, 23 May 2014 17:54:26 +0000 (19:54 +0200)
gtk/gtkgesturelongpress.c

index 72637765a09951ba9b30c71ffd54f9048bec7617..c833cead8be190702ca13606dda76208ed5e2b20 100644 (file)
@@ -130,9 +130,9 @@ gtk_gesture_long_press_update (GtkGesture       *gesture,
     {
       if (priv->timeout_id)
         {
-          g_signal_emit (gesture, signals[CANCELLED], 0);
           g_source_remove (priv->timeout_id);
           priv->timeout_id = 0;
+          g_signal_emit (gesture, signals[CANCELLED], 0);
         }
 
       priv->cancelled = TRUE;
@@ -149,10 +149,9 @@ gtk_gesture_long_press_end (GtkGesture       *gesture,
 
   if (priv->timeout_id)
     {
-      if (!priv->triggered)
-        g_signal_emit (gesture, signals[CANCELLED], 0);
       g_source_remove (priv->timeout_id);
       priv->timeout_id = 0;
+      g_signal_emit (gesture, signals[CANCELLED], 0);
     }
 
   priv->cancelled = priv->triggered = FALSE;
@@ -163,15 +162,8 @@ gtk_gesture_long_press_sequence_state_changed (GtkGesture            *gesture,
                                                GdkEventSequence      *sequence,
                                                GtkEventSequenceState  state)
 {
-  GtkGestureLongPressPrivate *priv;
-
-  priv = gtk_gesture_long_press_get_instance_private (GTK_GESTURE_LONG_PRESS (gesture));
-
   if (state == GTK_EVENT_SEQUENCE_DENIED)
-    {
-      gtk_gesture_long_press_end (gesture, sequence);
-      priv->cancelled = TRUE;
-    }
+    gtk_gesture_long_press_end (gesture, sequence);
 }
 
 static void